/**
 * 上传图片 WebUploader
 */
(function($,editor){

    var uploadImage,
        selectFile;
    /**
     * 上传图像
     * @constructor
     */
    function UploadImage(){
        this.uploader = null;
        this.callback = null;
        this.init();
    }

    UploadImage.prototype = {
        init : function(){
            this.uploadImageUrl =  editor.getOpt("uploadImageUrl");
            this.imageFieldName = editor.getOpt("imageFieldName");/* 提交的图片表单名称 */
            this.imageMaxSize = editor.getOpt("imageMaxSize");/* 上传大小限制，单位B */
            this.imageAllowFiles = editor.getOpt("imageAllowFiles");/* 上传图片格式显示 */
            this.imageCompressEnable = editor.getOpt("imageCompressEnable");/* 是否压缩图片,默认是true */
            this.downloadresUrl = editor.getOpt("downloadresUrl");

            //友好提示
            $("#upload-title").html("注意：图片格式仅支持："+this.imageAllowFiles);

            this.initUploader();
            //监听开始上传事件
            this.registerStart();
        },
        initUploader : function(){
            var _this = this;

             this.uploader = WebUploader.create({

                // 选完文件后，是否自动上传。
                auto: false,
                 fileVal : _this.imageFieldName,
                 // swf文件路径
                swf: editor.options.UEDITOR_HOME_URL + '/third-party/webuploader/Uploader.swf',

                // 文件接收服务端。
                server: _this.uploadImageUrl,
                 fileNumLimit : 1,
                 fileSingleSizeLimit : _this.imageMaxSize,

                 // 选择文件的按钮。可选。
                // 内部根据当前运行是创建，可能是input元素，也可能是flash.
                pick: '#filePicker',
                 noCompressIfLarger : _this.imageCompressEnable,
                // 只允许选择图片文件。
                accept: {
                    title: '选择图片',
                    extensions: _this.imageAllowFiles,
                    mimeTypes: 'image/*'
                }
            });

            this.uploader.on("fileQueued",function(file){
                selectFile = file;
                $("#show-message").html('<div class="alert alert-info" role="alert">'+file.name+'</div>');
            });


            /**
             * 上传中
             */
            this.uploader.on("uploadProgress",function(file,percentage){
                $("#show-message").html('<div class="alert alert-info" role="alert">正在上传中... "'+ (percentage * 100) + '%'+'"</div>');
            });

            /**
             * 上传成功
             */
            this.uploader.on("uploadSuccess",function(file,serverData){
                if(serverData && serverData.path){
                    var addr = _this.downloadresUrl + serverData.path;
                    editor.execCommand('inserthtml', '<img class="kfformula" src="'+ addr +'" />');

                    _this.callback();

                }else{
                    $("#show-message").html('<div class="alert alert-danger" role="alert">上传失败。</div>');
                }
            });

            /**
             * 上传失败
             */
            this.uploader.on("uploadError",function(file){
                $("#show-message").html('<div class="alert alert-danger" role="alert">上传失败。</div>');
            });
        },
        registerStart : function(){
            var _this = this;
            editor.registerCommand("uploadimagestart",{
                execCommand : function(id,callback){
                    if(!selectFile){
                        $("#").html('<div class="alert alert-warning" role="alert">请选择一个文件在上传。</div>');
                    }else{
                        _this.uploader.upload();
                        _this.callback = callback;
                    }
                }
            });
        }
    };

    $(document).ready(function(){
        uploadImage = new UploadImage();
    });

})($,editor);